package Admin

import (
	"ali-hr/Database"
	"ali-hr/Models"
	"fmt"
)

/**
 * Created by Goland
 * User: wkk alisleepy@hotmail.com
 * Time: 2021/12/18 - 22:44
 * Desc: <关于Admin的一些逻辑部分>
 */

var ()

// CreateAdmin 添加admin管理员
func CreateAdmin(name, password string) int {
	// 1、先查是否存在同名管理员
	admin := Models.Admin{Name: name}
	Database.SqlDB.Debug().Where(&admin).First(&admin)
	fmt.Println("校验管理员是否存在，id：", admin.ID)
	if admin.ID > 0 {
		fmt.Println("该管理员已存在：" + name)
		return 1
	}

	// 2、执行添加操作
	admin.Name = name
	admin.Password = password
	// 创建数据时，返回err信息，通过判断err来得到是否写入成功
	err := Database.SqlDB.Create(&admin).Error
	if err != nil {
		return -1
	}
	return 0
}

// UpdateAdmin 更新管理员
func UpdateAdmin(id int, name, password string) bool {
	// 1、校验一下是否存在
	admin := Models.Admin{ID: uint(id)}
	err := Database.SqlDB.Where(&admin).First(&admin).Error
	// 未获取到admin信息，表示不存在
	if err != nil {
		fmt.Println("管理员不存在：", id)
		return false
	}

	// 2、更新
	admin.Name = name
	admin.Password = password
	Database.SqlDB.Save(&admin)
	return true
}

// ChangeStatus 修改状态
func ChangeStatus(id int, status string) bool {
	// 1、校验一下是否存在
	admin := Models.Admin{ID: uint(id)}
	err := Database.SqlDB.Where(&admin).First(&admin).Error
	// 未获取到admin信息，表示不存在
	if err != nil {
		fmt.Println("管理员不存在：", id)
		return false
	}

	// 2、更新
	admin.Status = status
	err = Database.SqlDB.Save(&admin).Error
	if err != nil {
		fmt.Println("更新失败")
		return false
	}
	return true
}

// DeleteAdmin 删除
func DeleteAdmin(id int) int {
	// 1、校验一下是否存在
	admin := Models.Admin{ID: uint(id)}
	err := Database.SqlDB.Where(&admin).First(&admin).Error
	// 未获取到admin信息，表示不存在
	if err != nil {
		fmt.Println("管理员不存在：", id)
		return 1
	}

	// 2、删除
	err = Database.SqlDB.Delete(&admin).Error
	if err != nil {
		fmt.Println("删除失败")
		return -1
	}
	return 0
}
